package day5;

import java.util.Arrays;
import java.util.Scanner;

//数组插入
public class Demo5 {
    //有一个有序的数组，手动插入一个元素，保证数组还是有序的
    public static void main(String[] args) {
        int nums[]={1,2,3,5,6,7,8};
        System.out.println("插入前："+ Arrays.toString(nums));
        Scanner sc=new Scanner(System.in);
        System.out.print("输入你想要插入的元素：");
        int number=sc.nextInt();
        //由于数组在内存中是连续的空间，长度一但固定，不能修改
        //需要插入只能创建更长的数组
//        int newNums[]=new int[nums.length+1];
//        //将原数组的值，赋值到新数组中
//        for(int i=0;i<nums.length;i++){
//            newNums[i]=nums[i];
//        }
        //等价于将上面的第一步和第二步（帮你构建长度更长的数组，同时还会赋值)
        int newNums[]=Arrays.copyOf(nums,nums.length+1);

        //3.计算插入的位置，因为保证顺序（找到第一个比我大的数）
        int index=newNums.length-1;
        for (int i=0;i<nums.length;i++){
            if (number<nums[i]){
                index=i;  //记录下标
                break;
            }
        }
        //4.进行元素后移（从后往前移，防止数据丢失）
        for (int i=newNums.length-1;i>index;i--){
            newNums[i]=newNums[i-1];
        }
        //给指定的位置插入数组元素
        newNums[index]=number;
        System.out.println("插入后："+Arrays.toString(newNums));
    }
}
